home *** CD-ROM | disk | FTP | other *** search
- Listing 3
-
- /*-----------------------------------------------------------------------
- | This program is an example of how the C arrays of |
- | structures generated by Screen Machine can be displayed. |
- | |
- | Note: |
- | Screen Machine always generates the structure "_scrn". If |
- | you are including more than one screen generated by Screen |
- | Machine in a given program, only one declaration of the |
- | "_scrn" structure should be copied into the program. |
- -----------------------------------------------------------------------*/
-
- /*various include files*/
- #include <stdio.h>
- #include <graph.h>
- #include <bios.h>
- #include <dos.h>
-
- #define FALSE 0
- #define TRUE 1
- #define VIDEO 0x10 /*software interrupt 0x10 */
- #define WRITE_ATTR_CHAR 9 /*function 9 */
-
- void disp_screen(struct _scrn *, unsigned short );
-
- struct _scrn {
- char *chrs;
- char cw;
- char rw;
- char att;
- };
-
- struct _scrn screen_mainmenu[]={
-
- {"╔════════════════════════════════════╗",21,6,31},
- {"║ ║",21,7,31},
- {"║ Grade Book Main Menu ║",21,8,31},
- {"║ ║",21,9,31},
- {"║ 1) Scan Grades ║",21,10,31},
- {"║ 2) Edit/View Grades ║",21,11,31},
- {"║ 3) Print Grade Book ║",21,12,31},
- {"║ 4) Scan Names ║",21,13,31},
- {"║ 5) Print Rosters ║",21,14,31},
- {"║ 6) Other Print Functions ║",21,15,31},
- {"║ 7) Set Teacher Information ║",21,16,31},
- {"║ 8) Drop Lowest Grade ║",21,17,31},
- {"║ 9) Exit ║",21,18,31},
- {"║ ║",21,19,31},
- {"║ For help, press <Alt><H>. ║",21,20,31},
- {"╚════════════════════════════════════╝",21,21,31},
- {"\0",0,0,0}
- };
-
-
- long color_back_grnd= 1; /*all screens will use a blue
- background*/
-
-
- main()
- {
-
- disp_screen(screen_mainmenu, TRUE); /*clear screen and then display the
- screen defined by screen_mainmenu*/
-
- }
-
- /*-----------------------------------------------------------
- | disp_screen - Use ptr passed to array of structures |
- | containing &text; col; row; and attribute. |
- | Use BIOS int 10h function 9 to display the |
- | data. |
- | |
- | If cls_flag is TRUE, clear the screen before|
- | displaying the data. When clearing the |
- | screen, use the attribute defined in the |
- | variable color_back_grnd |
- | |
- ------------------------------------------------------------*/
-
- void disp_screen(p, cls_flag)
- struct _scrn *p;
- unsigned short cls_flag;
- {
- char wcol;
- char * wsptr;
-
- union REGS inregs, outregs;
-
-
- if (cls_flag)
- {
- _setbkcolor(color_back_grnd);
- _clearscreen(_GCLEARSCREEN);
- }
-
- inregs.h.ah = WRITE_ATTR_CHAR; /*print char and attribute*/
- inregs.x.cx = 1; /*print 1 char*/
-
- while ( *(p->chrs) )
- {
- wsptr=p->chrs; /*get ptr to string*/
- wcol=p->cw;
-
- inregs.h.bh = 0; /*video page 0*/
- inregs.h.bl = p->att; /*attribute to use */
-
- while (inregs.h.al = *wsptr++) /*char to print*/
- {
-
- /*position the cursor*/
-
- _settextposition( (short) p->rw, (short) wcol++);
-
- int86 ( VIDEO, &inregs, &outregs ); /*print with BIOS*/
- }
-
- p++;
- }
-
- }